using System;
using System.Collections.Generic;
using System.ComponentModel;
using Microsoft.Ccr.Core;
using Microsoft.Dss.Core.Attributes;
using Microsoft.Dss.ServiceModel.Dssp;
using Microsoft.Dss.ServiceModel.DsspServiceBase;
using W3C.Soap;

using dssp = Microsoft.Dss.ServiceModel.Dssp;
using sicklrf = Microsoft.Robotics.Services.Sensors.SickLRF.Proxy;
using submgr = Microsoft.Dss.Services.SubscriptionManager;

namespace UrbanLRF
{

    public sealed class Contract
    {
        [DataMember]
        public const string Identifier = "http://schemas.tempuri.org/2008/09/urbanlrf.html";
    }

    [DataContract]
    public class UrbanLRFState
    {
    }


    [DataContract]
    public class NotifyObstacleState
    {
        [DataMember]
        public int _Angle;
    }        


    [ServicePort]
    public class UrbanLRFOperations : PortSet<DsspDefaultLookup, DsspDefaultDrop, Subscribe, Get, Connect, Replace, NotifyObstacle>
    {
    }

    public class Get : Get<GetRequestType, PortSet<sicklrf.State, Fault>>
    {
        public Get()
        {
        }

        public Get(GetRequestType body)
            : base(body)
        {
        }

        public Get(GetRequestType body, PortSet<sicklrf.State, Fault> responsePort)
            : base(body, responsePort)
        {
        }
    }

    public class Connect : Update<UrbanLRFState, PortSet<DefaultUpdateResponseType, Fault>>
    {
        public Connect()
        {
        }

        public Connect(UrbanLRFState body)
            : base(body)
        {
        }
    }



    public class NotifyObstacle : Replace<NotifyObstacleState, PortSet<DefaultReplaceResponseType, Fault>>
    {
        public NotifyObstacle()
        {
        }

        public NotifyObstacle(NotifyObstacleState body)
            :
            base(body)
        {
        }
    }

    public class Replace : Replace<sicklrf.State, PortSet<DefaultReplaceResponseType, Fault>>
    {
        public Replace()
        {
        }

        public Replace(sicklrf.State body)
            : base(body)
        {
        }
    }

    public class Subscribe : Subscribe<SubscribeRequestType, PortSet<SubscribeResponseType, Fault>>
    {
    }

}
